User interfaces refers to the methods and devices that are used to accommodate interaction between the machines and the users who use them. The user interfaces allow for communicating information from the machine to the user, and communicating information from the user to the machine.
Generally, the user interacts with the machine through the user interfaces presented by an application running on the machine. The user interfaces are designed by the software developers with the purpose of allowing the user to take full advantage of the functions of the applications. This may include presenting a finite number of options for the user to choose rather than requiring the user to memorize and manually enter commands from a large number of command options. Furthermore, the user interfaces are generally designed so that they are intuitive and easy to use. This significantly reduces the training to use a new application allowing the user to become productive in a short time.
Since the user may use applications designed by different groups of software developers from the different software vendors, the user is required to be familiar with multiple user interfaces and to interact with each interface individually. This requirement still exists even though there may be overlapping interfaces among the applications.
Unless there are collaborations among the software vendors, the user interfaces for each application are designed virtually without any anticipation of being modified by applications from other software vendors. This is because the software vendors want to preserve the carefully designed graphics and layout of their user interfaces. As a result, the user is unable to take advantage of the common user interfaces and data structure among the applications.